package org.huawei260.String;

/**
 * @Auther: qingle
 * @Date: 2024/8/25-1:05
 * @Description:
 * 求字符串中所有整数的最小和
 * 题目描述
 * 说明
 *
 * 字符串s，只包含 a-z A-Z + - ；
 * 合法的整数包括
 * 1） 正整数 一个或者多个0-9组成，如 0 2 3 002 102
 * 2）负整数 负号 - 开头，数字部分由一个或者多个0-9组成，如 -0 -012 -23 -00023
 *
 * 输入描述
 * 包含数字的字符串
 *
 * 输出描述
 * 所有整数的最小和
 *
 * @version: 1.0
 */
public class O0047_求字符串中所有整数的最小和 {

	public static void main(String[] args) {

		// 主要是针对 负数，负数开头的数字，需要特殊处理
		// 遇到负号，则取后面数字完整地拼接
		// 没有负号，累加
//		String s = "a-100b2c3d4e";
//		String s = "bb1234aa";
		String s = "bb12-34aa";
		System.out.println(getMinSum(s));
	}

	private static int getMinSum(String s) {
		int sum = 0;
		int num = 0;
		// 遇到负号，则取后面数字完整地拼接
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			if (c == '-') {
				i++;
				int start = i;
				// 遇到非数字，则退出
				while(i < s.length() && Character.isDigit(s.charAt(i))){
					i++;
				}
				String numStr = s.substring(start,i);
				if (numStr.length() > 0) {
					sum -= Integer.parseInt(numStr);
				}
//				i--;
//				continue;
			}
			else if (Character.isDigit(s.charAt(i))) {
				// 字符转数字，累加
				sum += Integer.parseInt(String.valueOf(c));
			}
		}

		return sum;
	}
}
